/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.edu.psa.bussines;

import br.edu.psa.model.Administrador;
import br.edu.psa.model.Cliente;
import br.edu.psa.model.Usuario;
import br.edu.psa.persistence.AdministradorJpaController;
import br.edu.psa.persistence.ClienteJpaController;
import br.edu.psa.persistence.UsuarioJpaController;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author JOAO e ANDRIGO
 */
@Stateless
@LocalBean
public class LoginBean{

    @PersistenceContext
    private EntityManager em;

    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")
    public Usuario register(Usuario u) throws Exception{
        if (u.getEmail() == null || u.getEmail().equals("")) {
            return null;
        }

        if (u.getSenha() == null || u.getSenha().equals("")) {
            return null;
        }

        if (u instanceof Cliente) {
            Cliente c = (Cliente) u;
            if (c.getCpf() == null || c.getCpf().equals("")) {
                return null;
            }

            if (c.getEndereco() == null || c.getEndereco().equals("")) {
                return null;
            }

            if (c.getEstado() == null || c.getEstado().equals("")) {
                return null;
            }

            if (c.getNome() == null || c.getNome().equals("")) {
                return null;
            }

            if (c.getTelefone() == null || c.getTelefone().equals("")) {
                return null;
            }
            ClienteJpaController controller = new ClienteJpaController(em);
            try {
                controller.create(c);
                return c;
            } catch (Exception ex) {
                return null;
            }
        }
        if (u instanceof Administrador) {
            Administrador a = (Administrador) u;
            try {
                AdministradorJpaController controller = new AdministradorJpaController(em);
                controller.create(a);
                return a;
            } catch (Exception ex) {
                return null;
            }
        }
        return null;
    }

    public Administrador loginAdm(String email, String password) throws Exception{
        if (email == null || email.equals("")) {
            return null;
        }

        if (password == null || password.equals("")) {
            return null;
        }

        AdministradorJpaController controller = new AdministradorJpaController(em);
        return controller.findAdministrador(email, password);
    }

    public Cliente loginCliente(String email, String password) {
        if (email == null || email.equals("")) {
            return null;
        }

        if (password == null || password.equals("")) {
            return null;
        }

        ClienteJpaController controller = new ClienteJpaController(em);
        return controller.findCliente(email, password);
    }
    
    public Usuario edit(Usuario u){
     if (u.getEmail() == null || u.getEmail().equals("")) {
            return null;
        }

        if (u.getSenha() == null || u.getSenha().equals("")) {
            return null;
        }

        if (u instanceof Cliente) {
            Cliente c = (Cliente) u;
            if (c.getCpf() == null || c.getCpf().equals("")) {
                return null;
            }

            if (c.getEndereco() == null || c.getEndereco().equals("")) {
                return null;
            }

            if (c.getEstado() == null || c.getEstado().equals("")) {
                return null;
            }

            if (c.getNome() == null || c.getNome().equals("")) {
                return null;
            }

            if (c.getTelefone() == null || c.getTelefone().equals("")) {
                return null;
            }
            ClienteJpaController controller = new ClienteJpaController(em);
            try {
                controller.edit(c);
                return c;
            } catch (Exception ex) {
                return null;
            }
        }
        if (u instanceof Administrador) {
            Administrador a = (Administrador) u;
            try {
                AdministradorJpaController controller = new AdministradorJpaController(em);
                controller.edit(a);
                return a;
            } catch (Exception ex) {
                return null;
            }
        }
        return null;
    }
    
    public boolean remove(Usuario u){
        UsuarioJpaController controller = new UsuarioJpaController(em);
        try {
            controller.destroy(u.getId());
            return true;
        }  catch (Exception ex) {
           return false;
        }
    }
}
